package com.fanrenqiji.entity;

import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Where;

import javax.persistence.*;

/**
 * Created by yanwt on 2017/3/16.
 */
@Getter
@Setter
@Entity
@Table(name = "sys_office")
@org.hibernate.annotations.Table(appliesTo = "sys_office",comment = "组织机构")
@org.hibernate.annotations.DynamicInsert
@org.hibernate.annotations.DynamicUpdate
@org.hibernate.annotations.Cache(region="sys_office", usage = CacheConcurrencyStrategy.READ_WRITE)
public class OfficeEntity {
    /**
     * 编号
     */
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;
    /**
     * 父级编号
     */
    @ManyToOne
    @JoinColumn(name="parent_id",columnDefinition=("bigint(20) default null comment '父级编号ID'"))//,foreignKey = @ForeignKey(value=ConstraintMode.NO_CONSTRAINT))
    @Where(clause="del_flag=0")
    private OfficeEntity parent;
    /**
     * 所有父级编号.用于记录通路上级的深度 按照优先级排序记录
     */
    @Column(name="parent_ids",columnDefinition=("varchar(255) default null comment '所有父级编号'"))
    private String parentIds;

    /**
     * 机构名称
     */
    @Column(name="name",columnDefinition=("varchar(100) default null comment '机构名称'"))
    private String name;
    /**
     * 机构类型（1：公司；2：部门；3：小组）
     */
    @Column(name="office_type",columnDefinition=("varchar(11) default null comment '机构类型（1：公司；2：部门；3：小组）'"))
    private String officeType;
    /**
     * 机构等级（2：一级；3：二级；4：三级；5：四级）
     */
    @Column(name="grade",columnDefinition=("varchar(1) default null comment '机构等级（1：一级；2：二级；3：三级；4：四级）'"))
    private String grade;

}
